Storage provisioning is a frequent and important Information Technology (IT) task in which a set of users, applications or workload entities are assigned to new or existing storage resources. Such assignment is preferably made in a manner to accommodate the storage capacity and traffic generated by the users, applications and workload entities. This involves assigning storage entities (called volumes herein) to storage containers (called aggregates herein) that are hosted on one or more systems.
Under conventional methodologies, the provisioning or assignment of new volumes is performed without considering the performance impact of the provisioned volumes on the systems hosting the aggregates. Nor do conventional methodologies consider utilization of resources that impact performance such as processor, memory, etc. Instead, in conventional methodologies for provisioning storage the assignment of volumes is performed purely on the basis of storage capacity in the aggregates (determination of whether there is enough space on an aggregate to assign a volume). This approach can lead to an unbalanced deployment, where some systems are heavily loaded while others are mostly idle. The heavily loaded systems are highly likely to perform poorly, and the mostly idle systems are highly likely to be underutilized.